#define FLT_MAX 3.402823466e+38F
#define FLT_MIN 1.175494351e-38F
#define M_PI 3.141592654
#define M_2PI 6.283185307
#define M_1DIVPI 0.318309886
#define M_1DIV2PI 0.159154943

struct Vertex
{
	vec3 position;
	vec3 normal;
	vec3 tangent;
	vec3 bitangent;
	vec2 uv;
};

struct Material {
	vec3 emissive;
	vec3 baseColor;
	float subsurface;
	float metallic;
	float specular;
	float specularTint;
	float roughness;
	float anisotropic;
	float sheen;
	float sheenTint;
	float clearcoat;
	float clearcoatGloss;
	float IOR;
	float transmission;
};

struct ObjDesc
{
	uint64_t vertexAddress;
	uint64_t indexAddress;
	uint64_t materialAddress;
};

struct HitPayload
{
	vec3 color;
	vec3 weight;
	vec3 origin;
	vec3 direction;
	uint seed;
	int depth;
};

